package com.ssy.lingxi.report.service;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.report.api.vo.request.AddSubMemberVO;
import com.ssy.lingxi.report.api.vo.request.OperateNoticeVO;
import com.ssy.lingxi.report.api.vo.request.PurchasePortalRequest;
import com.ssy.lingxi.report.api.vo.response.PurchasePortalStatisticsVO;
import com.ssy.lingxi.report.model.vo.response.MemberRegisterStatisticsVO;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 会员报表接口定义
 * @author 伍将
 * @date 2020/11/9
 * @version 2.0.0
 */
public interface IMemberReportService {

    /**
     * 会员注册日报表
     * @author 伍将
     * @date 2020/11/9
     * @param startTime:
     * @param endTime:
     **/
    void memberRegisterDayReport(LocalDateTime startTime, LocalDateTime endTime);

    /**
     * 会员注册月报表
     * @author 伍将
     * @date 2020/11/9
     * @param startTime:
     * @param endTime:
     **/
    void memberRegisterMonthReport(LocalDateTime startTime, LocalDateTime endTime);

    /**
     * 获取会员注册数据-平台获取
     * @author 伍将
     * @date 2020/11/10
     * @param user:
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.report.model.vo.response.MemberRegisterStatisticsVO>
     **/
    Wrapper<MemberRegisterStatisticsVO> getMemberRegisterList(UserLoginCacheDTO user);

    /**
     * 获取会员注册数据-会员获取
     * @author 伍将
     * @date 2020/11/10
     * @param user:
     * @return com.ssy.lingxi.common.response.Wrapper<com.ssy.lingxi.report.model.vo.response.MemberRegisterStatisticsVO>
     **/
    Wrapper<MemberRegisterStatisticsVO> getMemberRegisterListByMember(UserLoginCacheDTO user);

    /**
     * 更新会员注册报表-平台
     * @author 伍将
     * @date 2021/1/29
     * @param operateVO: 操作通知
     **/
    void  updateMemberRegisterReport(OperateNoticeVO operateVO);
    /**
     * 添加下级会员申请统计
     * @author 伍将
     * @date 2021/1/29
     * @param addSubMemberVO:
     **/
    Wrapper<Void>  addSubMemberRegisterReport(AddSubMemberVO addSubMemberVO);

    /**
     * 初始化采购统计
     * [采购统计：用于采购门户首页]
     */
    void initPurchaseDayReport();
    /**
     *  采购统计
     *  [采购统计：用于采购门户首页]
     * @author ds
     * @date 2021/7/3
     * @version 2.0.0
     */
    void newlyAddedDayPurchaseReportTask();

    /**
     * 查询采购-门户首页统计
     * @param sysUser 登录用户
     * @return 采购-门户首页统计
     */
    Wrapper<PurchasePortalStatisticsVO> getPurchaseStatisticsByPortal(PurchasePortalRequest sysUser);

    /**
     * 查询采购-门户首页统计列表
     * @param request 查询请求
     * @return 采购-门户首页统计列表
     */
    Wrapper<List<PurchasePortalStatisticsVO>> getPurchaseStatisticsByPortal(List<PurchasePortalRequest> request);
}
